<?php

class Ciempies_model extends CI_Model {

    public function __construct() {
        parent::__construct();
    }

    function autenticarUsuario($usuario, $pass) {
        $query = 'CALL AUTENTICAR_USUARIO(?,?)';
        $resultado = $this->db->query($query, array($usuario, $pass));
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function datosResponsable($usuario) {
        $query = 'CALL DATOS_RESPONSABLE(?)';
        $resultado = $this->db->query($query, $usuario);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function agregarColaborador($vrol, $vnombre, $vapellido, $vcarrera, $vfecha_inicio, $vfecha_fin, $vurl, $idresponsable, $vposicion) {
        $datos_colaborador = array(
            'vrol' => $vrol,
            'vnombre' => $vnombre,
            'vapellido' => $vapellido,
            'vcarrera' => $vcarrera,
            'vfecha_inicio' => $vfecha_inicio,
            'vfecha_fin' => $vfecha_fin,
            'vurl' => $vurl,
            'idresponsable' => $idresponsable,
            'vposicion' => $vposicion);
        $query = 'CALL ALTA_COLABORADOR(?,?,?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $datos_colaborador);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function agregarNoticia($vcontenido_es, $vcontenido_en, $vtitulo_es, $vtitulo_en, $vfecha, $vautor, $vkeywords, $vidresponsable) {
        $datos_noticia = array(
            'vcontenido_es' => $vcontenido_es,
            'vcontenido_en' => $vcontenido_en,
            'vtitulo_es' => $vtitulo_es,
            'vtitulo_en' => $vtitulo_en,
            'vfecha' => $vfecha,
            'vautor' => $vautor,
            'vkeywords' => $vkeywords,
            'vidresponsable' => $vidresponsable
        );
        $query = 'CALL ALTA_NOTICIA(?,?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $datos_noticia);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function asociarImagenNoticia($vurl, $vidnoticia) {
        $imagen = array(
            'vurl' => $vurl,
            'vidnoticia' => $vidnoticia
        );
        $query = 'CALL ASOCIAR_IMAGENES_NOTICIA(?,?)';
        $resultado = $this->db->query($query, $imagen);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function liberarDescarga($coment_es, $coment_en, $link, $version, $etiqueta, $id, $imagen_url) {
        $d = array('coment_es' => $coment_es,
            'coment_en' => $coment_en,
            'link' => $link,
            'version' => $version,
            'etiqueta' => $etiqueta,
            'id' => $id,
            'imagen_url' => $imagen_url);
        $query = 'CALL LIBERAR_SOFTWARE(?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $d);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function buscarColaborador($tag) {
        $query = 'CALL BUSCAR_COLABORADOR(?)';
        $resultado = $this->db->query($query, $tag);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function eliminarColaborador($id) {
        $query = 'CALL ELIMINAR_COLABORADOR(?)';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function eliminarNoticia($id) {
        $query = 'CALL ELIMINAR_NOTICIA(?)';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function datosColaborador($id) {
        $query = "  SELECT COLABORADOR.IDCOLABORADOR AS ID,NOMBRE,APELLIDO,CARRERA,ROL,FECHAINICIO,FECHAFIN,URL,POSICION 
                    FROM COLABORADOR,IMAGEN_COLABORADOR 
                    WHERE COLABORADOR.IDCOLABORADOR = IMAGEN_COLABORADOR.IDCOLABORADOR 
                    AND IMAGEN_COLABORADOR.IDCOLABORADOR=? ";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizarColaborador($nuevo) {
        $d = array('nombre' => $nuevo['nombre_col'],
            'apellido' => $nuevo['apellido_col'],
            'carrera' => $nuevo['carrera_col'],
            'rol' => $nuevo['rol_col'],
            'fechaInicio' => $nuevo['fechaInicio'],
            'fechaFin' => $nuevo['fechaFin'],
            'url' => $nuevo['url'],
            'posicion' => $nuevo['posicion'],
            'id' => $nuevo['id']);
        $query = "  UPDATE COLABORADOR,IMAGEN_COLABORADOR 
                    SET COLABORADOR.NOMBRE = ?,
                    COLABORADOR.APELLIDO=?, 
                    COLABORADOR.CARRERA=?,
                    COLABORADOR.ROL=?,
                    COLABORADOR.FECHAINICIO=?,
                    COLABORADOR.FECHAFIN=?,
                    IMAGEN_COLABORADOR.URL=?,
                    COLABORADOR.POSICION=?
                    WHERE COLABORADOR.IDCOLABORADOR=IMAGEN_COLABORADOR.IDCOLABORADOR 
                    AND COLABORADOR.IDCOLABORADOR =?;
                  ";
        $this->db->query($query, $d);
    }

    function buscarNoticia($tag) {
        $query = 'CALL BUSCAR_NOTICIA(?)';
        $resultado = $this->db->query($query, $tag);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function contenidoNoticia($id) {
        $query = "  SELECT  IDNOTICIA,
                            TITULO_ES,
                            CONTENIDO_ES,
                            TITULO_EN,
                            CONTENIDO_EN,
                            AUTOR,
                            KEYWORDS
                    FROM NOTICIA
                    WHERE IDNOTICIA=? ";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function imagenesNoticia($id) {
        $query = 'SELECT IMAGEN_NOTICIA.URL 
	FROM IMAGEN_NOTICIA NATURAL JOIN NOTICIA 
	WHERE  NOTICIA.IDNOTICIA=?';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function actualizarImagenesNoticia($id) {
        $query = 'CALL ACTUALIZAR_IMAGENES_NOTICIA(?)';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function actualizarNoticia($nuevo) {
        $d = array(
            'titulo_col' => $nuevo['titulo_col'],
            'nota_col' => $nuevo['nota_col'],
            'tituloe_col' => $nuevo['tituloe_col'],
            'notae_col' => $nuevo['notae_col'],
            'autor_col' => $nuevo['autor_col'],
            'keywords_col' => $nuevo['keywords_col'],
            'id' => $nuevo['id']
        );
        $query = "  UPDATE NOTICIA 
                    SET 
                    TITULO_ES = ?,
                    CONTENIDO_ES=?, 
                    TITULO_EN=?,
                    CONTENIDO_EN=?,
                    AUTOR=?,
                    KEYWORDS=?
                    WHERE IDNOTICIA =?;
                  ";
        $this->db->query($query, $d);
    }

    function buscarDescarga($tag) {//pendiente
        $query = 'CALL BUSCAR_DESCARGA(?)';
        $resultado = $this->db->query($query, $tag);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function eliminarDescarga($id) {
        $query = 'CALL ELIMINAR_DESCARGA(?)';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function datosDescarga($id) {
        $query = "  SELECT  
                    S.IDSOFTWARE AS ID,
                    S.COMENTS_ES AS ES, 
                    S.COMENTS_EN AS EN, 
                    S.URL AS FILEURL,
                    S.NOMBRE_V AS DOWNLOADNAME,
                    S.NOMBRE_LINK AS ETIQUETA,
                    IMS.URL AS FILENAME
                    FROM SOFTWARE S,IMAGEN_SOFTWARE IMS 
                    WHERE S.IDSOFTWARE = IMS.IDSOFTWARE 
                    AND S.IDSOFTWARE=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    function actualizarDescarga($param) {
        $d = array(
            'coment_es' => $param['coment_es'],
            'coment_en' => $param['coment_en'],
            'surl' => $param['link'],
            'nombre_v' => $param['version'],
            'nombre_link' => $param['etiqueta'],
            'imsurl' => $param['filename'],
            'idsoftware' => $param['id']);
        $query = "  UPDATE SOFTWARE S,IMAGEN_SOFTWARE IMS
                    SET 	S.COMENTS_ES = ?, 
                                S.COMENTS_EN =?, 
                                S.URL =?,
                                S.NOMBRE_V =?,
                                S.NOMBRE_LINK =?,
                                IMS.URL =?
                    WHERE S.IDSOFTWARE = IMS.IDSOFTWARE 
                    AND         S.IDSOFTWARE=?;       ";
        $this->db->query($query, $d);
    }

    public function guardarTutorial($param) {
        $query = 'CALL GUARDAR_TUTORIAL(?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $param);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function buscarTutorial($tag) {
        $query = 'CALL BUSCAR_TUTORIAL(?)';
        $resultado = $this->db->query($query, $tag);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function eliminarTutorial($id) {
        $query = 'CALL ELIMINAR_TUTORIAL(?)';
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function datosTutorial($id) {
        $query = " SELECT 
                T.IDTUTORIAL AS ID,
		T.TITULO_ES,
		T.TITULO_EN,
		T.CONTENIDO_ES,
		T.CONTENIDO_EN,
		T.AUTOR,
		IMT.URL
                FROM TUTORIAL T JOIN IMAGEN_TUTORIAL IMT ON(T.IDTUTORIAL=IMT.IDTUTORIAL)
                WHERE T.IDTUTORIAL=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizarTutorial($param) {
        $query = " UPDATE TUTORIAL T,IMAGEN_TUTORIAL IMT 
                    SET 
                    T.TITULO_ES = ?,
                    T.CONTENIDO_ES=?, 
                    T.TITULO_EN=?,
                    T.CONTENIDO_EN=?,
                    T.AUTOR=?,
                    IMT.URL=?
                    WHERE T.IDTUTORIAL = IMT.IDTUTORIAL 
                    AND T.IDTUTORIAL =?
                                  ";
        $this->db->query($query, $param);
    }

    public function clasifiaciones() {
        $query = 'SELECT TIPO FROM TIPO_PUBLICACION';
        $resultado = $this->db->query($query);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function guardarPublicacion($param) {
        $query = 'CALL GUARDAR_PUBLICACION(?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $param);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function buscarPublicacion($tag) {
        $t = array('a' => $tag, 'b' => $tag);
        $query = "  SELECT IDPUBLICACION AS ID,TITULO_ES AS TITULO,AUTOR  
                    FROM PUBLICACION
                    WHERE TITULO_ES LIKE CONCAT('%',?,'%') OR 
                          TITULO_EN LIKE CONCAT('%',?,'%')";
        $resultado = $this->db->query($query, $t);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function eliminarPublicacion($key) {
        $query = 'DELETE FROM PUBLICACION
                WHERE IDPUBLICACION=?';
        $this->db->query($query, $key);
    }

    public function datosPublicacion($id) {
        $query = " SELECT 
                IDPUBLICACION AS ID,
		TITULO_ES,
		TITULO_EN,
		CONTENIDO_ES,
		CONTENIDO_EN,
		AUTOR,
		TIPO
                FROM PUBLICACION
                WHERE IDPUBLICACION=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizarPublicacion($param) {
        $query = "  UPDATE PUBLICACION 
                    SET 
                        TITULO_ES = ?,
                        CONTENIDO_ES=?, 
                        TITULO_EN=?,
                        CONTENIDO_EN=?,
                        AUTOR=?,
                        TIPO=?
                        WHERE IDPUBLICACION =? ";
        $this->db->query($query, $param);
    }

    public function guardarRecurso($param) {
        $query = 'CALL GUARDAR_RECURSO(?,?,?,?,?)';
        $resultado = $this->db->query($query, $param);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function buscarRecurso($tag) {
        $t = array('a' => $tag, 'b' => $tag);
        $query = "  SELECT IDRECURSO AS ID,TITULO_ES AS TITULO  
                    FROM RECURSO
                    WHERE TITULO_ES LIKE CONCAT('%',?,'%') OR 
                          TITULO_EN LIKE CONCAT('%',?,'%')";
        $resultado = $this->db->query($query, $t);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function eliminarRecurso($key) {
        $query = ' DELETE FROM RECURSO
                    WHERE IDRECURSO=?';
        $this->db->query($query, $key);
    }

    public function datosRecurso($id) {
        $query = " SELECT 
                IDRECURSO AS ID,
		TITULO_ES,
		TITULO_EN,
		CONTENIDO_ES,
		CONTENIDO_EN
                FROM RECURSO
                WHERE IDRECURSO=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizarRecurso($param) {
        $query = "  UPDATE RECURSO 
                    SET 
                    TITULO_ES = ?,
                    CONTENIDO_ES=?, 
                    TITULO_EN=?,
                    CONTENIDO_EN=?
                    WHERE IDRECURSO =? ";
        $this->db->query($query, $param);
    }

    public function guardar_herramienta($param) {
        $query = 'CALL GUARDAR_HERRAMIENTA(?,?,?,?,?,?,?,?,?)';
        $resultado = $this->db->query($query, $param);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function buscar_herramienta($tag) {
        $query = 'CALL BUSCAR_HERRAMIENTA(?)';
        $resultado = $this->db->query($query, $tag);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function eliminar_herramienta($key) {
        $query = 'SELECT URL FROM IMAGEN_HERRAMIENTA WHERE IDHERRAMIENTA=?';
        $resultado = $this->db->query($query, $key);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();

        $query = ' DELETE FROM HERRAMIENTA WHERE IDHERRAMIENTA=?';
        $this->db->query($query, $key);

        return $out;
    }

    public function datos_herramienta($id) {
        $query = " SELECT    H.IDHERRAMIENTA AS ID,
                            TITULO_ES,
                            TITULO_EN,
                            INTRO_ES,
                            INTRO_EN,
                            DESC_ES,
                            DESC_EN,
                            IFRAME_URL,
                            URL 
                  FROM HERRAMIENTA H JOIN IMAGEN_HERRAMIENTA IH 
                  ON(H.IDHERRAMIENTA=IH.IDHERRAMIENTA)
                  WHERE H.IDHERRAMIENTA=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizar_herramienta($param) {
        $query = "  UPDATE HERRAMIENTA H,IMAGEN_HERRAMIENTA IH
                    SET 
                    H.TITULO_ES=?,
                    H.INTRO_ES=?,
                    H.DESC_ES=?,
                    H.TITULO_EN=?,
                    H.INTRO_EN=?,
                    H.DESC_EN=?,
                    H.IFRAME_URL=?,
                    IH.URL=?
                    WHERE H.IDHERRAMIENTA=IH.IDHERRAMIENTA 
                    AND H.IDHERRAMIENTA=? ";
        $this->db->query($query, $param);
    }

    public function datos_responsable($id) {
        $query = "   SELECT    
                     R.IDRESPONSABLE AS ID,
                     NOMBRE,
                     CORREO,
                     BIO_ES,
                     BIO_EN,
                     URL 
           FROM RESPONSABLE R JOIN IMAGEN_RESPONSABLE IR 
           ON(R.IDRESPONSABLE=IR.IDRESPONSABLE)
           WHERE R.IDRESPONSABLE=?";
        $resultado = $this->db->query($query, $id);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function datos_portada() {
        $query = "  SELECT    
                    P.IDPORTADA AS ID,
                    INTRO_ES,
                    INTRO_EN
                    FROM PORTADA P 
                    WHERE P.IDPORTADA=1";
        $resultado = $this->db->query($query);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function actualizar_resp($param) {
        $query = "  UPDATE RESPONSABLE R,IMAGEN_RESPONSABLE IR
                    SET 
                    NOMBRE=?,
                    CORREO=?,
                    BIO_ES=?,
                    BIO_EN=?,
                    URL=?
                    WHERE R.IDRESPONSABLE=IR.IDRESPONSABLE 
                    AND R.IDRESPONSABLE=? ";
        $this->db->query($query, $param);
    }

    public function actualizar_portada($param) {
        $query = "  UPDATE PORTADA
                    SET 
                    INTRO_ES=?,
                    INTRO_EN=?
                    WHERE  IDPORTADA=1 ";
        $this->db->query($query, $param);
    }

    public function registrar($r_ip, $r_date, $r_usuario) {
        $query = "insert into registro(r_registro_id,r_ip,r_date,r_usuario) values(null,?,?,?)";
        $this->db->query($query, array($r_ip, $r_date, $r_usuario));
    }

    public function lista_accesos() {
        $query = "SELECT r_ip,r_date FROM registro limit 10";
        $resultado = $this->db->query($query);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function get_total($tabla) {
        $query = "SELECT count(*) as total FROM $tabla";
        $resultado = $this->db->query($query);
        $out = $resultado->row();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function colaboradores_por_carrera() {
        $query = "select round((a.total_carrera/a.total)*100,2) as porcentaje,a.carrera
                from (
                SELECT count(*) as total_carrera, lower(CARRERA) as carrera, (select count(*) from COLABORADOR) as total 
                FROM COLABORADOR group by CARRERA ) as a
                group by a.CARRERA";
        $resultado = $this->db->query($query);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

    public function colaboradores_por_rol() {
        $query = "select round((a.total_rol/a.total)*100,2) as porcentaje,a.rol
                from (
                SELECT count(*) as total_rol, lower(rol) as rol, (select count(*) from COLABORADOR) as total 
                FROM COLABORADOR group by rol ) as a
                group by a.rol";
        $resultado = $this->db->query($query);
        $out = $resultado->result();
        $resultado->next_result();
        $resultado->free_result();
        return $out;
    }

}
